Physical defects in non-volatile memory, such shorts between neighboring word lines, shorts between a word line and the substrate, broken word lines, etc, may result in data corruption which is above the correction capability of the error correction codes (“ECC”), leading to data loss.
One approach is to preventing data loss is to try screening such memory defects during production via extensive memory tests that stress the memory in order to reveal these defects. Such extensive testing may increase the memory products cost significantly due to the high testing time, testing equipment cost and overkill yield loss. In addition, such production testing may not be able to provide sufficient defect detection and screening.
Another approach is based on RAID like mechanisms, which store XOR signatures of the data, that enable its recovery once corrupted as a result of a memory defect. Such mechanisms are very expensive, due to the required memory overprovisioning for storing the XOR signatures and due to the requirement for a very large Controller volatile memory DRAM for computing the XOR signatures over long data stripes. These schemes also involve high firmware complexity.
A third approach uses temporary XOR signatures computed across data from multiple memory dies & planes and stored in a small Controller volatile memory SRAM. After programming the data to the memory, the data is read and the data integrity is verified. In case data found to have been corrupted due to a physical memory defect, the data is recovered based on the XOR signatures stored in the Controller which are de-XORed with the uncorrupted data from the memory in order to reconstruct the corrupted data. In case no data corruption is encountered, the XOR signatures may be reset (ie deleted) once in a while and a new XOR signature will accumulate the next portion of data traffic.
This third approach can be used in low cost products. The amount of memory required in the Controller for storing the XOR signatures is equal to the amount of data pages that may be corrupt by a memory defect. For two dimensional NAND, a memory defect corrupts a relatively small number of data pages. For example, in a two dimensional NAND memory system that stores three bits of data per memory cell, a short between word lines can corrupt up to six data pages (located in the two adjacent shorted word lines). Hence, the memory requirements are relatively small and acceptable. For three dimensional memories, a physical defect in the memory may corrupt a significantly higher number of data pages. For example, in a three dimensional NAND memory system that stores three bits of data per memory cell, a short between word lines can corrupt up to twenty four data pages. This requires a very large memory in the Controller for storing the signatures and can become cost prohibitive for implementation in low cost products.